perm filename SAILIO.SAI[PNT,HE]1 blob sn#367368 filedate 1978-07-13 generic text, type C, neo UTF8
COMMENT ⊗   VALID 00003 PAGES
C REC  PAGE   DESCRIPTION
C00001 00001
C00002 00002	ENTRY
C00006 00003	!	aliasppn, loginppn
C00007 ENDMK
C⊗;
ENTRY;
BEGIN "SAILIO"
DEFINE ! = "COMMENT";

INTERNAL INTEGER PROCEDURE UGETF(INTEGER CHAN);
BEGIN
	! EXTENDS THE FILE OPEN ON CHANNEL CHAN;
	define UGETF = '073000;
	INTEGER I,CHN; LABEL DOUGTF;
	CHN←CHAN;
	quick_code;
		move	'13,CHN;
		lsh	'13,5;
		addi	'13,UGETF;
		hrlm	'13,DOUGTF;	! PREPARE UGETF;
	DOUGTF:
		I			;
	end;
	RETURN(I);
END;

!	get current record number;

INTERNAL INTEGER PROCEDURE UGET(INTEGER CHAN);
BEGIN
	define MTAPE = '072000;
	LABEL ADR,ADR1,DOMTPE; INTEGER CHN;
	INTEGER GMOD; GMOD←CVSIX("GODMOD");
	CHN←CHAN;
	quick_code;
		move	'13,GMOD;
		movem	'13,ADR;
		setzm	'13,adr1;
		move	'13,CHN;
		lsh	'13,5;
		addi	'13,MTAPE;
		hrlm	'13,DOMTPE;
		jrst	DOMTPE	;
	ADR:
		0	;	! '475744555744; ! SIXBIT /GODMOD/;
	ADR1:	0	;
	DOMTPE:
		ADR		;
		move	'13,ADR1;
		movem	'13,CHN;
	end;
	RETURN(CHN);
END;

INTERNAL INTEGER PROCEDURE FLOOKUP(INTEGER CHAN; STRING FILE);
BEGIN
	INTEGER FLAG; STRING ERRMESS;
	LOOKUP(CHAN,FILE,FLAG);
	IF FLAG THEN
	    BEGIN
	    CASE FLAG←FLAG MOD 8 OF
		BEGIN
		[0]	ERRMESS←"No such file";
		[1]	ERRMESS←"Illegal PPN";
		[2]	ERRMESS←"Protection violation";
		[3]	ERRMESS←"File is busy, currently in Read-Alter Mode";
		[5]	ERRMESS←"File was already opened for output on another channel";
		ELSE	ERRMESS←"This error no"&cvs(flag mod 8)&" should not happen"
		END;
	    OUTSTR(CRLF&ERRMESS);
	    END;
	RETURN(FLAG);
END;


INTERNAL INTEGER PROCEDURE FENTER(INTEGER CHAN; STRING FILE);
BEGIN
	INTEGER FLAG; STRING ERRMESS;
	ENTER(CHAN,FILE,FLAG);
	IF FLAG THEN
	    BEGIN
	    CASE FLAG←FLAG MOD 8 OF
		BEGIN
		[0]	ERRMESS←"Null filename given for write file";
		[1]	ERRMESS←"Illegal PPN given";
		[2]	ERRMESS←"Trying to write on a write protected file";
		[3]	ERRMESS←"File is currently being used";
		[6]	ERRMESS←"Different filename specified for ENTER and LOOPKUP";
		ELSE	ERRMESS←"Error number"&cvs(flag)&" shouldnt have occurred"
		END;
	    OUTSTR(CRLF&ERRMESS);
	    END;
	RETURN(FLAG);
END;

INTERNAL INTEGER PROCEDURE FLENTER(INTEGER CHAN; STRING FILE);
BEGIN
	INTEGER FLAG;
	IF FLAG←FLOOKUP(CHAN,FILE) THEN RETURN(FLAG);
	FLAG←FENTER(CHAN,FILE);	RETURN(FLAG);
END;

!	aliasppn, loginppn;
SIMPLE STRING PROCEDURE ALIASPPN;
	RETURN(CVXSTR(CALL(0,"DSKPPN")));

SIMPLE STRING PROCEDURE LOGINPPN;
	RETURN(CVXSTR(CALL(0,"GETPPN")));

END "SAILIO";